#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/shm.h>

typedef struct stu
{
	char name[5];
	int age;
}stu_t;

int main()
{
	int id=shmget(1,sizeof(stu_t),IPC_CREAT|0644);
	if(id==-1){
		perror("shmget");
		return 1;
	}

	int pid=fork();
	if(pid<0){
		perror("fork");
		return 2;
	}
	
	if(pid==0){//子进程向共享内存写数据
		int shmid=shmget(1,sizeof(stu_t),0);	
		if(shmid==-1){
			perror("shmget");
			return 3;
		}
				
		stu_t *ps=(stu_t *)shmat(shmid,NULL,0);
		if(ps==NULL){
			perror("shmat");
			return 4;
		}
		int i=0;
		while(1){
			sprintf(ps->name,"hehe",i);
			ps->age=(i++)%1000000;
		i}
	}

	int shmid=shmget(1,sizeof(stu_t),0);
	if(shmid==-1){
		perror("shnget");
		return 5;
	}
	stu_t *ps=(stu_t *)shmat(shmid,NULL,0);
		while(1){
			sleep(1);
			printf("%s --->  %d\n",ps->name,ps->age);
			fflush(stdout);
		}
		return 0;
}























